#include<iostream>
using namespace std;
const int N = 1e5 + 10;
int arr[N];
int temp[N];
//void quick_sort(int l, int r)
//{
//	if (l == r) {
//		return;
//	}
//	int i = l - 1;
//	int j = r + 1;
//	while (i < j) {
//		do {
//			i++;
//		} while (arr[i]<arr[j]);
//		do {
//			j--;
//		} while (arr[i]>arr[j]);
//		if (i < j) {
//			swap(arr[i], arr[j]);
//		}
//	}
//	quick_sort(l, j);
//	quick_sort(j + 1, r);
//}
void quick_sort(int l, int r)
{
	if (l >= r) {
		return;
	}
	int mid = l + r >> 1;
	int x = arr[mid];
	int i = l - 1;
	int j = r + 1;
	while (i < j) {
		do {
			i++;
		} while (arr[i] < x);
		do {
			j--;
		} while (arr[j] > x);
		if (i < j) {
			swap(arr[i], arr[j]);
		}
	}
	quick_sort(l, j);
	quick_sort(j + 1, r);
}
void merge_sort(int l, int r)
{
	if (l == r) {
		return;
	}
	int mid = l + r >> 1;
	merge_sort(l, mid);
	merge_sort(mid + 1, r);
	int i = l;
	int j = mid + 1;
	int k = 0;
	while (i <= mid && j <= r) {
		if (arr[i] < arr[j]) {
			temp[k++] = arr[i++];
		}
		else {
			temp[k++] = arr[j++];
		}
	}
	while (i <= mid) {
		temp[k++] = arr[i++];
	}
	while (j <= r) {
		temp[k++] = arr[j++];
	}
	k = 0;
	for (int i = l; i <= r; i++) {
		arr[i] = temp[k++];
	}
}
int main()
{
	int n;
	cin >> n;
	for (int i = 0; i < n; i++) {
		cin >> arr[i];
	}
	//quick_sort(0, n - 1);
	merge_sort(0, n - 1);
	for (int i = 0; i < n; i++) {
		cout << arr[i] << " ";
	}
	return 0;
}